package com.vimeworks.vimemannager.ejb.aplicacion;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.apache.log4j.Logger;

import com.vimeworks.vimemannager.ejb.exeptions.BusquedaException;
import com.vimeworks.vimemannager.ejb.exeptions.ConstantesPersistencia;
import com.vimeworks.vimemannager.ejb.exeptions.EntidadNoEliminadaException;
import com.vimeworks.vimemannager.ejb.exeptions.EntidadNoGuardadaException;
import com.vimeworks.vimemannager.ejb.exeptions.SqlIncorrectoException;
import com.vimeworks.vimemannager.ejb.generico.GenericBean;
import com.vimeworks.vimemannager.modelo.aplicacion.Encuesta;
import com.vimeworks.vimemannager.modelo.aplicacion.Rol;

/**
 * EJB para el manejo de la entidad Rol
 *
 * @author VimeWorks
 * @version $Revision: 1.0 $
 */
@Stateless
public class EncuestaBean extends GenericBean<Encuesta, Long>  implements EncuestaBeanLocal {

	private static final Logger log = Logger.getLogger(EncuestaBean.class);
	
	@PersistenceContext(unitName = "vimeManagerPU")
	protected EntityManager em;
	
    public EncuestaBean() {
    	super(Encuesta.class);
    }

	/* (non-Javadoc)
	 * @see com.vimeworks.vimemannager.ejb.aplicacion.EncuestaBeanLocal#obtenerTodos()
	 */
	public List<Encuesta> obtenerTodos() throws SqlIncorrectoException {
		return this.obtenerTodos("nombre");
	}

	
	/* (non-Javadoc)
	 * @see com.vimeworks.vimemannager.ejb.aplicacion.EncuestaBeanLocal#guardarRol(com.vimeworks.vimemannager.modelo.aplicacion.Encuesta)
	 */
	public void guardarEncuesta(Encuesta encuesta) throws EntidadNoGuardadaException {
		
		this.guardar(encuesta);
	}

	/* (non-Javadoc)
	 * @see com.vimeworks.vimemannager.ejb.aplicacion.EncuestaBeanLocal#actualizarRol(com.vimeworks.vimemannager.modelo.aplicacion.Encuesta)
	 */
	public Encuesta actualizarEncuesta(Encuesta encuesta) throws EntidadNoGuardadaException {
		return this.guardarOActualizar(encuesta);
	}

	/* (non-Javadoc)
	 * @see com.vimeworks.vimemannager.ejb.aplicacion.EncuestaBeanLocal#eliminarRol(com.vimeworks.vimemannager.modelo.aplicacion.Encuesta)
	 */
	public void eliminarEncuesta(Encuesta encuesta) throws EntidadNoEliminadaException {
		this.eliminar(encuesta);
	}

	/* (non-Javadoc)
	 * @see com.vimeworks.vimemannager.ejb.aplicacion.EncuestaBeanLocal#buscarPorId(java.lang.Long)
	 */
	public Encuesta buscarPorId(Long codigo) throws BusquedaException {
		return this.buscarPorCodigo(codigo);
	}

	@Override
	public Encuesta buscarPorPoryecto(Long codigo) throws BusquedaException {
		Query query = em.createQuery("select t from Encuesta t where t.proyecto.codigo = :codigo").setParameter("codigo", codigo);
		return (Encuesta) query.getSingleResult();
		
		
	}

}
